"use strict";
var BWM = { color: 'blue', price: 100, size: 3 };
console.log(BWM); // {color: "blue", price: 100, size: 3}
var obj = { color: 'blue', price: 100, size: 3 };
console.log(BWM == obj); // false
var a;
var b = { d: 123, z: '123', f: '456', g: '789' };
var c = { b: '1', d: '2', a: '3' };
console.log(c); // {b: "1", d: "2", a: "3"}
// 函数中使用接口
function printCar(obj) {
    // obj.price = 123123 // 报错 只读属性readonly price只读
    console.log(obj.color, obj.price, obj.size);
}
printCar({ color: 'white', price: 2000000, size: 3 }); // 'white' 2000000 3
// 可选属性? size为可选
printCar({ color: 'white', price: 2000000 }); // 'white' 2000000 undefined
var myCar = [
    { color: 'black', price: 300000 },
    { color: 'yellow', price: 500000, size: 5 }
];
var yourCar = myCar;
// yourCar[0] = { color: 'blue', price: 300000 } // 报错,只读
yourCar[0].color = 'gray';
console.log(yourCar[0].color); // 'gray'
myCar = yourCar; // 类型断言  <car>yourCar
console.log(myCar[0].color); // 'gray'
function createSquare(config) {
    console.log(config.color, config.width);
}
// let mySquare1 = createSquare({ colour: 'red', width: 100 }) // colour: 'red'报错，ts会进行额外属性检查，导致不认识colour
var mySquare2 = createSquare({ colour: 'red', width: 100 }); // 1. 使用类型断言规避额外的属性检查
var squareOption = { colour: 'red', width: 100 }; // 打印: undefined 100
var mySquare3 = createSquare(squareOption); // 使用对象赋值的方式绕过额外属性检查 // 打印: undefined 100
